package com.zjsru.plan2024.oneday;

/**
 * 3115. 质数的最大距离
 * @Author: cookLee
 * @Date: 2024-07-02
 */
public class MaximumPrimeDifference {

    /**
     * 主
     * \
     * 输入： nums = [4,2,9,5,3]
     * 输出： 3
     * 解释： nums[1]、nums[3] 和 nums[4] 是质数。因此答案是 |4 - 1| = 3。
     * \
     * 输入： nums = [4,8,2,8]
     * 输出： 0
     * 解释： nums[2] 是质数。因为只有一个质数，所以答案是 |2 - 2| = 0。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        MaximumPrimeDifference maximumPrimeDifference = new MaximumPrimeDifference();
        int[] nums = new int[]{4,2,9,5,3};
        System.out.println(maximumPrimeDifference.maximumPrimeDifference(nums));
    }

    /**
     * 最大素数差
     *
     * @param nums nums
     * @return int
     */
    public int maximumPrimeDifference(int[] nums) {
        int start = 0;
        while (!this.helper(nums[start])) {
            start++;
        }
        int end = nums.length - 1;
        while (!this.helper(nums[end])) {
            end--;
        }
        return end - start;
    }

    /**
     * 帮手
     * 判断质数助手类
     *
     * @param num num
     * @return boolean
     */
    private boolean helper(int num) {
        //1不是质数
        for (int i = 2; i * i<= num; i++) {
            if(num % i == 0){
                return false;
            }
        }
        return num >= 2;
    }


}
